package com.zhouhx.flow.tasklist.entity;

import cn.hutool.core.date.DateUnit;
import com.zhouhx.flow.tasklist.TaskManager;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.function.Function;

/**
 * @author : zhouhx
 * 流程配置
 * @date : 2024/5/3 14:50
 */
@Data
@AllArgsConstructor
@Builder
public class FlowConf {
    /**
     * 是否重试
     */
    private boolean retry;
    /**
     * 重试次数
     */
    private int retryCount;
    /**
     * 步骤的状态的超时时间(获取设备状态的超时时间)(单位：s),默认5s
     * <p>根据流程的定时任务时间综合考虑，如果超时，则认为步骤失败</p>
     */
    private FlowStepTimeOut flowStepTimeOut;

    /**
     * 设备编号(可能为仓位号，也可能为充电桩编号+枪号)
     */
    private String equipmentNo;

    /**
     * 流程结束通知方法
     */
    public Function<TaskManager,?> posteriorFn;

    public FlowConf(){
        // 默认为5s
        this.flowStepTimeOut = new FlowStepTimeOut(5, DateUnit.SECOND);
    }
}
